<?php


class UnitsController extends AppController {
	var $name = 'Units';
	var $components = array ('Pagination');
	var $helpers = array('Html','Form','Accessibility','Pagination','Ajax','Input');

	function index() {
		$title = 'Unidades';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$conditions = array();

		// Permissao: se pode visualizar todas as unidades
		$group = $this->othAuth->getData('group');
		$level =$group['level'];
		$unitUser = $this->othAuth->getData('unit');

		if ($level >= 100) {  // not system admin
			$conditions[] = array("organization_id"=>$unitUser['0']['Organization']['id']);
		}


		$units = $this->Unit->find('all',array("conditions"=>$conditions));
		$this->set('units', $units);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/units');

		$title = 'Visualizar Unidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->Unit->id = $id;
		$this->Unit->recursive = 2;
		$this->set('unit', $this->Unit->read());
	}

	function add() {
		$title = 'Cadastrar Unidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->set('organizations', $this->Unit->Organization->find('list'));
		$this->set('estados', $this->Unit->Cidade->Estado->find('list',array('fields'=>array('id','nome'))));

		if (!empty($this->data)) {
			// Validacao
			if($this->data["Unit"]["nome"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Unit"]["organization_id"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Entidade é obrigatório.';
			}
			if (!empty($this->data["Unit"]["estado"])) {
				$conditions = array();
				$conditions[] = array('estado_id'=>$this->data["Unit"]["estado"]);
				$this->set('cidades', $this->Unit->Cidade->find('list',array('fields'=>array('id','nome'),'conditions'=>$conditions)));
			}
			if (isset($_SESSION['mensagem']['error'])) {
				return;
			}

			if ($this->Unit->save($this->data)) {
				$_SESSION['mensagem']['success'][] = 'Unidade cadastrada com sucesso!';
				$this->redirect('/units/view/'.$this->Unit->getLastInsertId());
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar a Unidade.';
			}
			$this->redirect('/units');
		}
	}

	function edit( $id=null) {
		if (!$id) $this->redirect('/units');

		$title = 'Editar Unidade';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->set('organizations', $this->Unit->Organization->find('list'));

		$this->Unit->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Unit->read();
		} else {

			// Validacao
			if($this->data["Unit"]["nome"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Unit"]["organization_id"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Entidade é obrigatório.';
			}
			
			if (!(isset($_SESSION['mensagem']['error']))) {
				if ($this->Unit->save($this->data['Unit'])) {
					$_SESSION['mensagem']['success'][] = 'Unidade alterada com sucesso!';
				} else {
					$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar a Unidade.';
				}
				$this->redirect('/units/view/'.$id);
			}
		}
		$unit = $this->Unit->find(array('`Unit`.id' => $id));
		$this->set('unit', $unit);

		/* Estado */
		$conditions = array();
		$estado_selected = null;
		if (!empty($this->data['Unit']['cidade_id'])) {
			$estado_selected = $this->data['Cidade']['estado_id'];
			$conditions[] = array('estado_id'=>$estado_selected);
		}
		$this->set('cidades', $this->Unit->Cidade->find('list', array('conditions'=>$conditions, 'fields'=>array('id','nome'))));
		$this->set('estados', $this->Unit->Cidade->Estado->find('list', array('fields'=>array('id','nome'))));
		$this->set('estado_selected',$estado_selected);
	}

	function delete($id) {
		if (!$id) $this->redirect('/units');

		if ($this->Unit->del($id)) {
			$_SESSION['mensagem']['success'][] = 'Unidade excluida com sucesso!';
		} else {
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir a Unidade.';
		}
		$this->redirect('/units');
	}
}
?>
